/**
 *  fileName:验证回文串
 *  time:2021/9/26
 *  todo:给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。

 说明：本题中，我们将空字符串定义为有效的回文串。

  

 示例 1:

 输入: "A man, a plan, a canal: Panama"
 输出: true
 解释："amanaplanacanalpanama" 是回文串
 示例 2:

 输入: "race a car"
 输出: false
 解释："raceacar" 不是回文串
  

 提示：

 1 <= s.length <= 2 * 105
 字符串 s 由 ASCII 字符组成

 作者：力扣 (LeetCode)
 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xne8id/
 来源：力扣（LeetCode）
 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 */

/**
 * @param {string} s
 * @return {boolean}
 */
// var isPalindrome = function(s) {
//   let str = ''
//   for (let i = 0; i < s.length; i++) {
//     let code = s.charCodeAt(i)
//     if(code>=65 && code <=90){
//       str += s[i].toLowerCase()
//     }
//     if(code>=97 && code <=122){
//       str += s[i]
//     }
//     if(code>=48 && code <=57){
//       str += s[i]
//     }
//   }
//
//   for (let left = 0,right = str.length - 1; left < right ; left++ ,right --) {
//     if(str[left] !== str[right]) return false
//   }
//
//   return  true
// };
var isPalindrome = function(s) {
  let arr = []
  s = s.toLowerCase()
  let reg = /[a-z0-9]/g

  for (let i = 0; i < s.length; i++) {
    if(s[i].match(reg)) arr.push(s[i])
  }

  while (arr.length > 1){
    if(arr[0] === arr[arr.length - 1]){
      arr.shift()
      arr.pop()
    }else {
      return false
    }
  }
  return true
};

isPalindrome("A man, a plan, a canal: Panama")
